1. Field of the Invention
The present invention relates, in general, to iSCSI storage area networks, and, more particularly, to software, systems and methods for the discovery, enumeration and management of target devices in an iSCSI storage area network.
2. Relevant Background
A storage system is a computer that provides storage service relating to the organization of information on writable persistent storage devices, such as memories, tapes or disks. Such a storage system is commonly deployed within a storage area network (SAN) or a network attached storage (NAS) environment.
A SAN is a high-speed network that enables establishment of direct connections between a storage system and its storage devices. The SAN may thus be viewed as an extension to a storage bus and, as such, an operating system of the storage system that enables access to stored information using block-based access protocols over the “extended bus”. In this context, the extended bus is typically embodied as Fibre Channel (FC) or Ethernet media adapted to operate with block access protocols, such as Small Computer Systems Interface (SCSI) protocol encapsulation over FC protocol (FCP) or Internet Protocols (IP) creating what is known as an Internet Small Computer Systems Interface (iSCSI). A SAN arrangement or deployment allows decoupling of data storage from the storage system, such as an application server, and some level of information storage sharing at the application server level. There are, however, environments wherein a SAN is dedicated to a single server and accessed via network protocols. iSCSI SANs often encounter such an environment. iSCSI therefore combines SCSI commands and protocols for storage, IP protocols for networking, and transfer protocols to enable data transfer, each of which are briefly described below.
Transfer communication protocols (TCP) enable data transfer to occur between a host and a target. Transfer protocols locate an appropriate target device, interpret application commands, translate them into commands understood by the target and move data between the device and system memory.
Networking protocols define the way information is transferred between hosts and targets in a network. Depending on the configuration and application, data is transferred as either files or blocks. For file transfers, one commonly used protocol is the MICROSOFT WINDOWS® system Server Management Block/Common Internet File System protocol. UNIX/LINUX® alternatively uses a Network File System protocol for the same purposes. Other protocols for file/block transfer will be apparent to one skilled in the art in the context of the present invention.
Storage protocols, such as SCSI, use block level data transfer to move information from one system to another resulting in the data being transferred in a format native to storage devices rather than application and operating systems.
iSCSI therefore merges the well established networking protocol entitled Transfer Control Protocol/Internet Protocol (TCP/IP) with the ubiquitous SCSI storage protocol and defines the rules for transporting block level data across TCP/IP based networks. Storage devices store data in block form. The block level data is transferred within a computer system to a storage medium via a Host Bus Adapter (HBA), a storage controller, or a network adapter.
In an iSCSI SAN system, regardless of the arrangement, access to data is initiated via a host node which is also known as an iSCSI initiator. When an iSCSI initiator connects to an iSCSI target, the storage is seen by the server operating system or host as a local SCSI device that can be formatted as usual. The underlying storage is transparent to applications and operating systems. An initiator can be an iSCSI driver (software) with a standard network card or a card (hardware) with a TCP offload engine (TOE), which reduces Central Processing Unit (CPU) utilization. (Host bus adaptors (HBAs) that offload both TCP and iSCSI are also available.) The primary difference between the iSCSI device and a network card lies in whether the CPU or a processor source on the card performs the fundamental tasks of decoding/encoding.
To gain access to the stored data, the host node must access information about each target device where the data is housed in what is called a discovery process. Once found, the host initiator must enumerate and keep track of the discovered target devices so as to know where to find particular repositories of data.
There are several ways by which to accomplish target device discovery. These means of discovery include Host Based Static Discovery, SendTargets commands, Service Locator Protocol (SLP) multicast discovery (SLP, Directory Agent (DA), etc.), Dynamic Host Communication Protocol (DHCP), Internet Storage Name Service (iSNS) query, iSNS state change notification, and several vendor specific utilities.
Host based Static discovery assumes that the Internet Protocol address, Transfer Communication Protocol, and the iSCSI target name information are already available to the initiator. The initiator performs no active discovery in this scenario. To establish an iSCSI session the initiator uses the known IP address and TCP port information to establish a connection. While convenient for small iSCSI situations, static discovery has limited applicability for growing SANs or situations where address information must be frequently updated.
SendTargets is a command used to provide an initiator with information pertaining to the targets located at a particular IP address. This command assumes that target address and TCP port information of some Network Entity is known by the initiator but that other targets associated with that entity are either unknown or have changed since the last query. A SendTarget command retrieves information regarding these other targets.
Finally zero configuration techniques such as SLP, DA and iSNS assume that the initiator does not have any information about the targets. The initiator multicasts discovery messages to the targets or storage servers to gain information about what exists in the SAN. While clearly the most versatile and comprehensive in its approach, this discovery means is correspondingly expensive from a processing time point of view to operate.
Each target that is discovered possesses a unique IP address, unique communication protocol, iSCSI names, etc. Furthermore, as the means by which a particular target is discovered may differ, the information may be presented to the initiator in differing formats. In addition two or more discovery methods may identify the same target, yet convey pertinent information regarding that target to the initiator differently. It may also be possible to communicate with the same target using a host network adapter. Finally the host operating system may approach iSCSI discovery differently at a fundamental level. Some operating systems approach discovery using an “on demand” approach while others “seek out” targets even when demand is absent.
The resulting hybrid of situations produces an inconsistent discovery environment where any one particular host may or may not know the extent of a particular SAN's availability. Furthermore the management of the various protocols needed to access known (or yet to be known) targets is daunting. What is needed are computer-implemented methods, computer systems and computer-readable media to provide a common means for accomplishing iSCSI discovery capable of directing and managing the differing iSCSI discovery approaches and protocols that is both scalable and platform independent.